using System.ComponentModel.DataAnnotations;

namespace Lzfy_Refund_Service.Models
{
    /// <summary>
    /// 患者退费密码更新请求模型
    /// </summary>
    public class PatientRefundPasswordUpdateRequest
    {
        /// <summary>
        /// 患者ID
        /// </summary>
        [Required(ErrorMessage = "患者ID不能为空")]
        [StringLength(32, ErrorMessage = "患者ID长度不能超过32个字符")]
        public string PatientId { get; set; } = string.Empty;

        /// <summary>
        /// 退费密码
        /// </summary>
        [StringLength(100, ErrorMessage = "退费密码长度不能超过100个字符")]
        public string? RefundPassword { get; set; }

        /// <summary>
        /// 修改人
        /// </summary>
        [StringLength(128, ErrorMessage = "修改人长度不能超过128个字符")]
        public string? Modifier { get; set; }

        /// <summary>
        /// 修改人证件类型
        /// </summary>
        [StringLength(32, ErrorMessage = "修改人证件类型长度不能超过32个字符")]
        public string? ModifierCardType { get; set; }

        /// <summary>
        /// 修改人证件号码
        /// </summary>
        [StringLength(32, ErrorMessage = "修改人证件号码长度不能超过32个字符")]
        public string? ModifierCardCode { get; set; }

        /// <summary>
        /// 修改时间
        /// </summary>
        public DateTime? ModifyTime { get; set; }

        /// <summary>
        /// 原密码（6位随机数）
        /// </summary>
        [Required(ErrorMessage = "原密码不能为空")]
        [StringLength(32, ErrorMessage = "原密码长度不能超过32个字符")]
        public string OrgPassword { get; set; } = string.Empty;
    }

    /// <summary>
    /// 患者退费密码更新响应模型
    /// </summary>
    public class PatientRefundPasswordUpdateResponse
    {
        /// <summary>
        /// 是否成功
        /// </summary>
        public bool Success { get; set; }

        /// <summary>
        /// 消息
        /// </summary>
        public string Message { get; set; } = string.Empty;

        /// <summary>
        /// 更新的患者ID
        /// </summary>
        public string? PatientId { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime? ModifyTime { get; set; }
    }
}